package com.pochogastos.servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.pochogastos.dao.CategoriaDAO;
import com.pochogastos.dao.GastoDAO;
import com.pochogastos.model.Categoria;
import com.pochogastos.model.Usuario;

/**
 * Servlet implementation class Gastos
 */
public class Gastos extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public Gastos() {
		super();
	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		try {
			Usuario u = (Usuario)request.getSession().getAttribute("USUARIO");
			String accion = request.getParameter("accion");
			String forward = "/gasto.jsp";
			
			if(u==null){
				RequestDispatcher rd = getServletContext().getRequestDispatcher("/Login?accion=");
				rd.forward(request, response);
			}else{
				if("agregar".equalsIgnoreCase(accion)){
					String descripcion = request.getParameter("descripcion");
					String categoria = request.getParameter("selectCategoria");
					String fecha = request.getParameter("fecha");
					String monto = request.getParameter("monto");
					int idGasto = GastoDAO.getInstance().insertGasto(descripcion,fecha, monto, categoria,u.getId());
					request.setAttribute("IDGASTO", idGasto);
				}
				List<Categoria> listaCategorias = CategoriaDAO.getInstance().getCategorias(u.getId());
				request.getSession().setAttribute("categorias", listaCategorias);
				RequestDispatcher rd = getServletContext().getRequestDispatcher(forward);
				rd.forward(request, response);
			}
		} catch (Exception e) {
			e.printStackTrace();
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/error.jsp");
			request.getSession().setAttribute("ERROR", e.getMessage());
			rd.forward(request, response);
		}
	}

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		try {
			Usuario u = (Usuario)request.getSession().getAttribute("USUARIO");
			String accion = request.getParameter("accion");
			String forward = "/gasto.jsp";
			
			if(u==null){
				RequestDispatcher rd = getServletContext().getRequestDispatcher("/Login?accion=");
				rd.forward(request, response);
			}else{
				if("agregar".equalsIgnoreCase(accion)){
					String descripcion = request.getParameter("descripcion");
					String categoria = request.getParameter("selectCategoria");
					String fecha = request.getParameter("fecha");
					String monto = request.getParameter("monto");
					int idGasto = GastoDAO.getInstance().insertGasto(descripcion,fecha, monto, categoria,u.getId());
					request.setAttribute("IDGASTO", idGasto);
				}
				List<Categoria> listaCategorias = CategoriaDAO.getInstance().getCategorias(u.getId());
				request.getSession().setAttribute("categorias", listaCategorias);
				RequestDispatcher rd = getServletContext().getRequestDispatcher(forward);
				rd.forward(request, response);
			}
		} catch (Exception e) {
			e.printStackTrace();
			RequestDispatcher rd = getServletContext().getRequestDispatcher("/error.jsp");
			request.getSession().setAttribute("ERROR", e.getMessage());
			rd.forward(request, response);
		}

	}

}
